package com.hw.common.framework.validator;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.util.Assert;

/*****
 * <pre>
 * 类名称：BeanValidatorMessages
 * 类描述：Bean校验信息
 * 创建人：JokenWang
 * 创建时间：2014年12月29日 下午3:46:54
 * </pre>
 * 
 * @version 1.0.0
 */
public class BeanValidatorMessages
{
    protected static Logger logger = LoggerFactory.getLogger(BeanValidatorMessages.class);
    
    // 错误信息的国际化信息
    private static MessageSourceAccessor errorMessageSourceAccessor;
    
    public static String getError(String messageCode, Locale locale)
    {
        String errorMessage = getErrorMessage(messageCode, locale);
        return errorMessage;
    }
    
    public static void setErrorMessageSourceAccessor(MessageSourceAccessor errorMessageSourceAccessor)
    {
        BeanValidatorMessages.errorMessageSourceAccessor = errorMessageSourceAccessor;
    }
    
    private static String getErrorMessage(String code, Locale locale)
    {
        try
        {
            Assert.notNull(errorMessageSourceAccessor, "请先设置错误消息的国际化资源");
            return errorMessageSourceAccessor.getMessage(code, new Object[] {}, locale);
        }
        catch (NoSuchMessageException e)
        {
            logger.error("不存在对应的错误键：{}，请检查是否在META-INF/i18n/messages的错误资源", code);
            throw e;
        }
    }
}
